package com.leetcode.May;

import java.util.Arrays;

/**
 * @Description: 移动零
 * @Author: Mr.Fxy
 * @CreateTime: 2024-05-11 14:28
 */
public class MovZero {
    public static void main(String[] args) {
        int[] nums = new int[]{0, 1, 0, 3, 12};
        moveZeroes(nums);

    }

    public static void moveZeroes(int[] nums) {
        int left = 0; // 左指针
        int right = 0; // 右指针
        // 遍历数组
        while (right < nums.length) {
            // 如果当前元素不为0，则将其与左指针指向的元素交换，并将左指针后移
            if (nums[right] != 0) {
                int temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
                left++;
            }
            // 右指针始终后移
            right++;
        }
        System.out.print("[");
        for (int i = 0; i < nums.length; i++) {
            if (i != nums.length - 1) {
                System.out.print(nums[i] + ",");
            } else {
                System.out.print(nums[i]);
            }
        }
        System.out.printf("]");
    }

//    public static int[] moveZeroes(int[] nums) {冒泡排序
//        for (int i = 0; i < nums.length; i++) {
//            for (int j = 0; j < nums.length - i - 1; j++) {
//                if (nums[j] > nums[j + 1]) {
//                    int temp = nums[j];
//                    nums[j] = nums[j + 1];
//                    nums[j + 1] = temp;
//                }
//            }
//        }
//        return nums;
//    }
}
